iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
Security

Hack the Boyfriend: 為了 CTF 帥哥,我貢獻了我的肝臟系列 第 4

說真的,要了解 PowerShell 跟理解你一樣難吧!

  • 分享至 

  • xImage
  •  

我繼續潛行


理智的我告訴自己,昨天的那段註解,只是一個好心系統管理員的備忘錄。

直到我發現 Connection-Saved.ps1──

放在一個沒上 ACL 的資料夾下。

不是編譯過的執行檔,而是一份完整、可讀、可執行的 PowerShell 腳本。

細看裡面,有他寫下來的一組流程:

# Connection-Saved.ps1
# Get-Credential | Export-Clixml -Path 'C:\scripts\pass.xml'
$encryptedPassword = Import-Clixml -Path 'C:\scripts\pass.xml'
$decryptedPassword = $encryptedPassword.GetNetworkCredential().Password
Connect-VIServer -Server 'VC-01' -User 'ctfboy_adm' -Password $decryptedPassword

乍看之下,這只是日常自動化。

但當我拿到 pass.xml,確認這是使用 Clixml 格式匯出的憑證,我的直覺告訴我:

「這不是給陌生人的東西。」

它只對特定的人──在同一個 SID、同一台主機、同一份 session ── 敞開。

我不確定這是不是巧合。

但我知道,有些東西 ...「選擇不刪除」比「不小心留下」還重要。

Clixml 透過 DPAPI 加密,限制了解密的使用者與機器。

我無法橫向移動用這段密碼,但若取得本機 admin、或是在原始帳號底下存取,就能還原出 plaintext。

$credential = Import-Clixml -Path 'C:\scripts\pass.xml'
$credential.GetNetworkCredential().username  # ctfboy_adm
$credential.GetNetworkCredential().password  # ReadMyM3mory!

這就是「從歷史紀錄裡打開後門」的下一步。

不是只看見過去,而是打開一個原本封閉的網路區段、一個未列出的資產管理介面──VC-01

這次,他沒有直接把帳號密碼寫進指令裡。

他用了 Clixml、用了腳本流程、用了原則。

或許不是留給我,
但剛好──

我找到了。


技術筆記:怎麼從 PowerShell 歷史紀錄一路解到密碼

發現過程:

我在目標機器上潛行時,找到了一個沒有設定權限保護的資料夾,裡面有一個 PowerShell 腳本,叫做:

Connection-Saved.ps1

打開來一看,它不是亂寫的指令,而是寫好流程的自動化腳本。

仔細看腳本內容:

# Connection-Saved.ps1
# Get-Credential | Export-Clixml -Path 'C:\scripts\pass.xml'
$encryptedPassword = Import-Clixml -Path 'C:\scripts\pass.xml'
$decryptedPassword = $encryptedPassword.GetNetworkCredential().Password
Connect-VIServer -Server 'VC-01' -User 'ctfboy_adm' -Password $decryptedPassword

這段的意思很簡單:

系統管理員把登入用的帳密匯出成一個加密檔(pass.xml)

再從這個檔案抓出密碼,來自動連線到一台 vCenter 管理伺服器

那這密碼可以被誰解開?

他用的是 PowerShell 內建的加密方法,叫 Clixml + DPAPI

這種加密有個重點:

只有「同一個使用者」在「同一台機器」上才能解密。

所以如果我剛好已經用他的帳號登入、或我有機器上的管理員權限,我就能直接把密碼解出來。

解釋我嘗試執行的指令:

PS C:\lab> $credential = Import-Clixml -Path 'C:\scripts\pass.xml'
PS C:\lab> $credential.GetNetworkCredential().username

ctf-boy


PS C:\lab> $credential.GetNetworkCredential().password

ReadMyM3mory!

這樣就成功還原出 vCenter 的管理員帳密

為什麼這段腳本很危險?

因為很多人以為把密碼加密、存在本機就安全了,但事實上,這種加密方式只要你拿到那台電腦的權限,或用同個帳號登入,你就能把整組密碼解出來。

這不只是設定問題,這是習慣問題。

防禦建議 - 寫給系統管理員(ctf-boy)看的:

PowerShell 憑證不要存本機:

改用安全的秘密管理工具(例如 Vault、Keepass)。

不要讓腳本跟密碼放在一起:

即使是自動化流程,也要區隔權限或加保護。

定期清除 PowerShell 歷史記錄:

用 Clear-History 或清掉 ConsoleHost_history.txt。

限制使用者對敏感資料夾的存取權限:

不要讓 Everyone 都能看 C:\scripts 這種目錄。


小語

# 冷靜過後,我沒有想太多。
# 就是 Clixml、DPAPI、加密憑證、歷史紀錄、未設定 ACL 的資料夾,然後一組沒刪掉的 admin 密碼。
# 純屬正常流程!!!真的不是心動。

上一篇
我在 ConsoleHost_history.txt 裡找到他的溫柔
下一篇
容貌焦慮的我,在夢裡收到他的穩定回應
系列文
Hack the Boyfriend: 為了 CTF 帥哥,我貢獻了我的肝臟26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言